<?php
/**
 * Created by PhpStorm.
 * User: Administratorjing
 * Date: 2018/3/25/025
 * Time: 10:51
 */

namespace app\api\validate;


use app\lib\exception\ParameterException;
use think\Exception;
use think\Request;
use think\Validate;

class BaseValidate extends Validate
{
    public function goCheck()
    {
        //获取http传入的参数，对其进行校验
        $request = Request::instance();
        $params = $request->param();
        $result = $this->batch()->check($params);
        if(!$result){
            //throw the error
            $e = new ParameterException([
                'msg' => $this->error,
            ]);
            throw $e;

        }else{
            return true;
        }
    }

    //自定义的规则，证明是正整数
    protected function isPositiveInteger($value, $rule='', $data='', $field='')
    {
        if (is_numeric($value) && is_int($value + 0) && ($value + 0) > 0) {
            return true;
        }
        //return $field . '必须是正整数';
        return false;
    }
    protected function isMobile($value)
    {
        $rule = '^1(3|4|5|7|8)[0-9]\d{8}$^';
        $result = preg_match($rule,$value);
        if($result)
        {
            return true;
        }else{
            return false;
        }
    }

    protected function isNotEmpty($value, $rule='', $data='', $field='')
    {
        if(empty($value)){
            return false;
        }else{
            return true;
        }
    }

    public function getDataByRule($arrays)
    {
        if (array_key_exists('user_id',$arrays)|array_key_exists('uid',$arrays)){
            //不允许包含user_id或者uid
            throw new ParameterException(
                [
                    'msg'=>'参数中包含非法的参数名'
                ]);
        }
        $newArray = [];
        foreach ($this->rule as $key=>$value)
        {
            $newArray[$key] = $arrays[$key];
        }
        return $newArray;
    }
}